//
//  NSDate+Extension.swift
//  SinaWeibo
//
//  Created by 林柱强 on 16/2/5.
//  Copyright © 2016年 林柱强. All rights reserved.
//

import UIKit

extension NSDate {
    class func dateWithStr(time: String) ->NSDate {
        //1.将服务器返回给我们的时间字符串转换为NSDate
        //1.1 创建formatter
        let formatter = NSDateFormatter()
        //1.2 设置时间格式
        formatter.dateFormat = "EEE MMM d HH:mm:ss Z yyyy"
        //1.3 设置时间的区域
        formatter.locale = NSLocale(localeIdentifier: "en")
        //1.4 转换字符串，转换好的时间是去除失去的时间
        let createdDate = formatter.dateFromString(time)!
        
        return createdDate
    }
    
    /**
     *   刚刚 一分钟内
     *   几分钟前 一小时内
     *   几小时前 一天内
     *   昨天 HH：mm 昨天
     *   MM-dd HH：mm 一年内
     *   yyyy-MM-dd HH：mm 更早期
     */
    var descDate: String {
        let calendar = NSCalendar.currentCalendar()
        
        //1. 判断是否为今天
        if calendar.isDateInToday(self) {
            //1.0 获取当前时间和系统时间的差距（秒数）
            let since = Int(NSDate().timeIntervalSinceDate(self))
            //print("since = \(since)")
            //1.1 是否刚刚
            if since < 60 {
                return "刚刚"
            }
            //1.2 多少分钟之前
            if since < 60 * 60 {
                return "\(since / 60)分钟前"
            }
            //1.3 多少小时之前
            return "\(since / 3600)小时前"
        }

        
        //2. 判断是否为昨天
        var formatterStr = "HH:mm"
        if calendar.isDateInYesterday(self) {
            //昨天 HH:mm
            formatterStr = "昨天 " + formatterStr
        }else {
            //3. 处理一年之内
            formatterStr = "MM-dd " + formatterStr
            //4. 处理更早时间
            let comps = calendar.components(NSCalendarUnit.Year, fromDate: self, toDate: NSDate(), options: NSCalendarOptions(rawValue: 0))
            if comps.year >= 1 {
                formatterStr = "yyyy-" + formatterStr
            }
        }
        
        //5. 按照指定的格式将时间转换为字串符
        //5.1创建formatter
        let formatter = NSDateFormatter()
        //5.2设置时间格式
        formatter.dateFormat = formatterStr
        //5.3设置时间的区域
        formatter.locale = NSLocale(localeIdentifier: "en")
        //5.4格式化
        return formatter.stringFromDate(self)
    }
}
